﻿using System;
using System.Text.RegularExpressions;
using BO.Solr;
using Utilities.Entities;

namespace GUI
{
    public partial class _404 : System.Web.UI.Page
    {
        private const int MaxSolrRequest = 4;
        private const int PageSize = 10;
        public bool ExactlySearching;
        public string Keywords;

        protected void Page_Load(object sender, EventArgs e)
        {
            var suggestKey = Keywords = Request.QueryString["suggest"] ?? string.Empty;

            if (!string.IsNullOrEmpty(suggestKey) && Regex.IsMatch(suggestKey, "[a-zA-Z0-9]+"))
            {
                var c = 1;
                SearchResult result = null;
                while (c <= MaxSolrRequest && (result == null || result.response.numFound <= 0))
                {
                    result = SearchBySuggestKey(suggestKey, c);
                    c++;
                }

                //var result = SolrBO.SearchNewsByKeywords(suggestKey, 1, PageSize, false);
                bool noResultFound = result == null || result.response == null || result.response.numFound <= 0;
                ExactlySearching = !noResultFound;
                if (noResultFound)
                {
                    result = SolrBO.SearchNewsByKeywords(suggestKey, 1, PageSize, false);
                }
                if (result != null && result.response.numFound > 0)
                {
                    divSuggest.Visible = ctrListNewsByTag.DataBind(result.response.docs, string.Empty);
                    ltrRedirectToHomePage.Text =
                        string.Format(
                        (noResultFound ? string.Empty : "<p>Có phải bạn đang quan tâm tới \"{0}\"? </p>") +
                            "<p>Hãy thử sử dụng chức năng tìm kiếm hoặc tham khảo những thông tin dưới đây: </p>"
                            , Keywords);
                    divImage404.Visible = false;
                    Response.StatusCode = 301;
                    Page.Header.Title = string.Format("{0} | tin moi cap nhat | tin lien quan | soha.vn", suggestKey);
                    return;
                }
            }
            Response.StatusCode = 404;
            divSuggest.Visible = false;
            ltrRedirectToHomePage.Text = "Bạn hãy thử sử dụng chức năng tìm kiếm.";
            Page.Header.Title = "Nội dung không tìm thấy hoặc không còn tồn tại.";
            //"Bạn sẽ quay về <a style=\"color:#007f74;\" href=\"/\">trang chủ</a> trong <span id=\"lblCountDown\">5</span> giây nữa.";
        }

        private SearchResult SearchBySuggestKey(string suggestKey, int divisor)
        {
            var subLength = suggestKey.Length / divisor;
            for (var i = 0; i < divisor; i++)
            {
                var start = i * subLength;
                var keywords = suggestKey.Substring(start, subLength).Trim();
                var result = SolrBO.SearchNewsByKeywords(keywords, 1, PageSize);
                if (result != null && result.response.numFound > 0)
                {
                    Keywords = keywords;
                    return result;
                }
            }
            return null;
        }
    }

}